

#ifndef _READERIMPL_H_
#define _READERIMPL_H_

#include <string>
#include <cstdint>

	class File;

	namespace las
	{
		class Header;
		class HeaderReader;
		class Point;

		class ReaderImpl
		{
		public:
			ReaderImpl(std::string const &strFileName);
			~ReaderImpl(void);
		public:
			void ReadHeader();
			Header const& GetHeader() const;
			void Reset();
			bool ReadNextPoint();
			Point const &GetPoint() const;
		private:
			File* m_pFile;
			Header *m_pHeader;
			HeaderReader *m_pHeaderReader;
			Point *m_pPoint;
			std::uint64_t m_PointCount;
			std::uint64_t m_CurrentPoint;
			std::uint16_t m_PointSize;
		};
	}


#endif


